package com.procurement.bidding.service.impl;

import java.util.List;

import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.core.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.procurement.bidding.domain.PcmEvaluationRule;
import com.procurement.bidding.mapper.PcmEvaluationCriteriaMapper;
import com.procurement.bidding.domain.PcmEvaluationCriteria;
import com.procurement.bidding.service.IPcmEvaluationCriteriaService;

import javax.annotation.Resource;

/**
 * 评标条例Service业务层处理
 * 
 * @author feng
 * @date 2023-11-22
 */
@Service
public class PcmEvaluationCriteriaServiceImpl implements IPcmEvaluationCriteriaService 
{
    @Resource
    private PcmEvaluationCriteriaMapper pcmEvaluationCriteriaMapper;

    /**
     * 查询评标条例
     * 
     * @param evaluationCriteriaId 评标条例主键
     * @return 评标条例
     */
    @Override
    public PcmEvaluationCriteria selectPcmEvaluationCriteriaByEvaluationCriteriaId(Long evaluationCriteriaId)
    {
        return pcmEvaluationCriteriaMapper.selectPcmEvaluationCriteriaByEvaluationCriteriaId(evaluationCriteriaId);
    }

    /**
     * 查询评标条例列表
     * 
     * @param pcmEvaluationCriteria 评标条例
     * @return 评标条例
     */
    @Override
    public List<PcmEvaluationCriteria> selectPcmEvaluationCriteriaList(PcmEvaluationCriteria pcmEvaluationCriteria)
    {
//        System.out.println( pcmEvaluationCriteriaMapper.selectPcmEvaluationCriteriaList(pcmEvaluationCriteria));
        return pcmEvaluationCriteriaMapper.selectPcmEvaluationCriteriaList(pcmEvaluationCriteria);
    }

    /**
     * 新增评标条例
     * 
     * @param pcmEvaluationCriteria 评标条例
     * @return 结果
     */
    @Transactional
    @Override
    public int insertPcmEvaluationCriteria(PcmEvaluationCriteria pcmEvaluationCriteria)
    {
        Long userId = SecurityUtils.getUserId();
        pcmEvaluationCriteria.setPresenter(userId);
        int rows = pcmEvaluationCriteriaMapper.insertPcmEvaluationCriteria(pcmEvaluationCriteria);
        insertPcmEvaluationRule(pcmEvaluationCriteria);
        return rows;
    }

    /**
     * 修改评标条例
     * 
     * @param pcmEvaluationCriteria 评标条例
     * @return 结果
     */
    @Transactional
    @Override
    public int updatePcmEvaluationCriteria(PcmEvaluationCriteria pcmEvaluationCriteria)
    {
        pcmEvaluationCriteriaMapper.deletePcmEvaluationRuleByEvaluationCriteriaId(pcmEvaluationCriteria.getEvaluationCriteriaId());
        insertPcmEvaluationRule(pcmEvaluationCriteria);
        return pcmEvaluationCriteriaMapper.updatePcmEvaluationCriteria(pcmEvaluationCriteria);
    }

    /**
     * 批量删除评标条例
     * 
     * @param evaluationCriteriaIds 需要删除的评标条例主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deletePcmEvaluationCriteriaByEvaluationCriteriaIds(Long[] evaluationCriteriaIds)
    {
        pcmEvaluationCriteriaMapper.deletePcmEvaluationRuleByEvaluationCriteriaIds(evaluationCriteriaIds);
        return pcmEvaluationCriteriaMapper.deletePcmEvaluationCriteriaByEvaluationCriteriaIds(evaluationCriteriaIds);
    }

    /**
     * 删除评标条例信息
     * 
     * @param evaluationCriteriaId 评标条例主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deletePcmEvaluationCriteriaByEvaluationCriteriaId(Long evaluationCriteriaId)
    {
        pcmEvaluationCriteriaMapper.deletePcmEvaluationRuleByEvaluationCriteriaId(evaluationCriteriaId);
        return pcmEvaluationCriteriaMapper.deletePcmEvaluationCriteriaByEvaluationCriteriaId(evaluationCriteriaId);
    }

    /**
     * 新增评标规则信息
     * 
     * @param pcmEvaluationCriteria 评标条例对象
     */
    public void insertPcmEvaluationRule(PcmEvaluationCriteria pcmEvaluationCriteria)
    {
        List<PcmEvaluationRule> pcmEvaluationRuleList = pcmEvaluationCriteria.getPcmEvaluationRuleList();
        Long evaluationCriteriaId = pcmEvaluationCriteria.getEvaluationCriteriaId();
        if (StringUtils.isNotNull(pcmEvaluationRuleList))
        {
            List<PcmEvaluationRule> list = new ArrayList<PcmEvaluationRule>();
            for (PcmEvaluationRule pcmEvaluationRule : pcmEvaluationRuleList)
            {
                pcmEvaluationRule.setEvaluationCriteriaId(evaluationCriteriaId);
                list.add(pcmEvaluationRule);
            }
            if (list.size() > 0)
            {
                pcmEvaluationCriteriaMapper.batchPcmEvaluationRule(list);
            }
        }
    }
}
